interface Props {
  id: string,
  children: number[]
}

// 使用Partial将Props的所有属性都变成可选属性
type PartialProps = Partial<Props>

interface optionalProps {
  id?: string,
  children?: number[]
}

// 使用Required将Props的所有属性都变成必选属性
type RequiredProps = Required<Props>

// 使用Pick将Props的属性中指定的属性挑选出来
type pickProps = Pick<Props, 'id'>

// 使用Omit将Props的属性中指定的属性剔除
type omitProps = Omit<Props, 'id'>

// 使用Record构建一个类型，它有一组属性key（string）和属性值类型（number）
type RecordProps = Record<'x' | 'y', number>